C++ এ স্ট্রাকচার এবং পয়েন্টার একসাথে ব্যবহার করে স্ট্রাকচারের ডেটা মেম্বারে সহজে অ্যাক্সেস করা যায়। স্ট্রাকচারের অবজেক্টের ঠিকানা ধারণ করতে পয়েন্টার ব্যবহার করা যেতে পারে, এবং সেই ঠিকানা ব্যবহার করে স্ট্রাকচারের সদস্যদের অ্যাক্সেস করা যায়।
স্ট্রাকচারের পয়েন্টার ঘোষণা করার সময় struct
কিওয়ার্ডের সাথে পয়েন্টার চিহ্ন *
ব্যবহার করা হয়। উদাহরণস্বরূপ:
struct Person {
string name;
int age;
};
Person *ptr; // Person স্ট্রাকচারের একটি পয়েন্টার
স্ট্রাকচারের পয়েন্টার ব্যবহার করে স্ট্রাকচারের ডেটা মেম্বার অ্যাক্সেস করার জন্য ->
(arrow) অপারেটর ব্যবহার করা হয়।
#include <iostream>
using namespace std;
struct Person {
string name;
int age;
};
int main() {
Person person1 = {"Alice", 25}; // একটি স্ট্রাকচার অবজেক্ট তৈরি করা
Person *ptr = &person1; // person1 এর ঠিকানা ptr এ রাখা হলো
// পয়েন্টার ব্যবহার করে স্ট্রাকচারের মেম্বার অ্যাক্সেস করা
cout << "Name: " << ptr->name << endl; // Output: Name: Alice
cout << "Age: " << ptr->age << endl; // Output: Age: 25
// পয়েন্টার ব্যবহার করে মান পরিবর্তন করা
ptr->age = 26;
cout << "Updated Age: " << person1.age << endl; // Output: Updated Age: 26
return 0;
}
বর্ণনা:
person1
নামের একটি Person
স্ট্রাকচারের অবজেক্ট তৈরি করা হয়েছে, এবং ptr
নামের একটি পয়েন্টার person1
এর ঠিকানা ধরে রেখেছে।ptr->name
এবং ptr->age
ব্যবহার করে name
এবং age
মেম্বার অ্যাক্সেস করা হয়েছে।age
মেম্বারের মান পরিবর্তন করা হয়েছে।C++ এ new
অপারেটর ব্যবহার করে স্ট্রাকচারের জন্য ডাইনামিক্যালি মেমোরি বরাদ্দ করা যায় এবং পয়েন্টারের মাধ্যমে সেই মেম্বারগুলিকে অ্যাক্সেস করা যায়।
#include <iostream>
using namespace std;
struct Person {
string name;
int age;
};
int main() {
// ডাইনামিক্যালি Person স্ট্রাকচারের মেমোরি বরাদ্দ
Person *ptr = new Person;
// মেম্বার ফিল্ডে মান অ্যাসাইন করা
ptr->name = "Bob";
ptr->age = 30;
// মান প্রদর্শন করা
cout << "Name: " << ptr->name << endl; // Output: Name: Bob
cout << "Age: " << ptr->age << endl; // Output: Age: 30
// মেমোরি মুক্ত করা
delete ptr;
return 0;
}
বর্ণনা:
new
অপারেটর ব্যবহার করে Person
স্ট্রাকচারের জন্য ডাইনামিক্যালি মেমোরি বরাদ্দ করা হয়েছে এবং ptr
নামের একটি পয়েন্টার সেটির ঠিকানা ধারণ করছে।ptr->name
এবং ptr->age
ব্যবহার করে মেম্বার ফিল্ডে মান অ্যাসাইন করা হয়েছে এবং প্রদর্শন করা হয়েছে।delete
অপারেটর ব্যবহার করে ডাইনামিক্যালি বরাদ্দকৃত মেমোরি মুক্ত করা হয়েছে।পয়েন্টার ব্যবহার করে স্ট্রাকচারের অ্যারে তৈরি করা যায় এবং সেই অ্যারের প্রতিটি উপাদানে অ্যাক্সেস করা সম্ভব।
#include <iostream>
using namespace std;
struct Person {
string name;
int age;
};
int main() {
// 3টি স্ট্রাকচার অবজেক্টের জন্য মেমোরি বরাদ্দ
Person *persons = new Person[3];
// প্রতিটি অবজেক্টের মেম্বার সেট করা
persons[0].name = "Alice";
persons[0].age = 25;
persons[1].name = "Bob";
persons[1].age = 30;
persons[2].name = "Charlie";
persons[2].age = 35;
// অবজেক্টের তথ্য প্রদর্শন
for (int i = 0; i < 3; i++) {
cout << "Person " << i + 1 << " - Name: " << persons[i].name << ", Age: " << persons[i].age << endl;
}
// মেমোরি মুক্ত করা
delete[] persons;
return 0;
}
বর্ণনা:
Person
স্ট্রাকচারের একটি অ্যারে ডাইনামিক্যালি তৈরি করা হয়েছে, যার আকার ৩।name
এবং age
মেম্বারে আলাদা আলাদা মান সেট করা হয়েছে।for
লুপ ব্যবহার করে প্রতিটি অবজেক্টের তথ্য প্রদর্শন করা হয়েছে।delete[]
অপারেটর ব্যবহার করে ডাইনামিক্যালি বরাদ্দকৃত মেমোরি মুক্ত করা হয়েছে।স্ট্রাকচারের সাথে পয়েন্টার ব্যবহার প্রোগ্রামিংয়ে মেমোরি ব্যবস্থাপনা এবং ডেটা ম্যানেজমেন্টকে সহজতর করে, যা বড় প্রোগ্রামে কার্যকর।
common.read_more